package com.cx.common;

import io.swagger.annotations.Api;

import java.util.HashMap;
import java.util.Map;

@Api(tags = "同意返回类")
public class R extends HashMap<String, Object> {

    private static final long serialVersionUID = -8157613083634272196L;

    private static final String CODE = "code";
    private static final String MSG = "msg";
    private static final String DATA = "data";

    private R() {
        this("success");
    }

    private R(String msg) {
        this(0, msg);
    }

    private R(int code, String msg) {
        this.put(CODE, code).put(MSG, msg);
    }

    public static R error() {
        return error("未知异常，请联系管理员");
    }

    public static R error(ResultCode resultCode) {
        return error(resultCode.code(), resultCode.msg());
    }

    public static R error(String msg) {
        return error(500, msg);
    }

    public static R error(int code, String msg) {
        return new R(code, msg);
    }

    public static R data(Object data) {
        return R.ok().put(DATA, data);
    }

    public static R ok(String msg) {
        return new R(msg);
    }

    public static R ok(Map<String, Object> map) {
        R r = R.ok();
        r.putAll(map);
        return r;
    }

    public static R ok() {
        return new R();
    }

    @Override
    public R put(String key, Object value) {
        super.put(key, value);
        return this;
    }

    public Object msg() {
        return this.get(MSG);
    }

    public void msg(String msg) {
        super.put(MSG, msg);
    }

    public Object data() {
        return this.get(DATA);
    }
}
